The present invention relates to software systems for managing businesses. More specifically, the present invention relates to a system that allows a user to model a company structure which includes multiple legal entities, or another structure in any of a wide variety of different ways, and also allows the user to associate users and data to that structure in a flexible way.
Companies currently vary in size from very large and diverse organizations to very small and atomic organizations. However, all are generally hierarchal in nature.
For instance, a larger company may have a head office or headquarters where upper level management or top executives reside.
The company also typically has someone that tracks the flow of money into and out of the company. Depending on company size, this can be a single person or a full department. In addition, some companies track smaller units within the company. Such units may be defined within the company based on function or location, or any other grouping that is logical for the particular company.
Other, smaller companies may be located at just a single geographic location and may have only a small number of employees. Such companies generally have a smaller and less complex organizational structure.
However, regardless of the size of the company, all companies generally have a set of rules that dictate how the company operates. Such companies typically require software applications and software systems to track how well the company is following those rules, and to track a wide variety of other information associated with the company.
In conventional business applications, there are many different ways that the concept of “company” or “enterprise” are implemented. Predominately, in the mid-market, the concept of multiple companies is implemented through a company-to-database ratio of 1:1. This makes it very difficult to perform inter-company transactions. For example, in such an environment, a user that works for multiple different companies must login and logout of different database systems whenever that user wishes to change the company for which she or he is accessing data.
In such systems, two or more companies may desire access to data corresponding to a single business entity or object. For example, a business entity may be setup to represent a given customer, but that same customer may be a customer of both companies, and the companies may, in reality, be two different divisions of the same enterprise. If both of those companies wish to have access to the Customer business entity, this has been handled awkwardly in the past. In one prior system, the customer business entity record must be duplicated and copied into the databases corresponding to both companies. Other software systems allow two or more companies to share a single database. This reduces the requirement for duplicating data, but it has, in the past, required each business entity to be labeled with a company ID that is entitled to access to that business entity. In other words, every record that is shared across different companies must contain identifiers for those companies within the record itself.
These systems have disadvantages in themselves. They either require duplication of data, or they require painstaking manipulation of each business entity to contain company identifiers. However, they present even more disadvantages in today's business environment.
The current business environment is constantly changing. Many businesses must deal with change on a large scale, both internally and externally. Employee turnover, mergers, acquisitions and company reorganizations all require changes to business processes. Very often, the business applications which support those processes must be changed as well.
In prior software systems, changes to the organization structure presented great disadvantages. For instance, if a company is acquired, then data must again be duplicated to accommodate the newly acquired organization. Similarly, in a database system which allows multiple companies to access a single database, the entities corresponding to the newly required company must all be accessed and modified to include the identifier corresponding to the newly acquired organization. It can thus be seen that prior systems require an undesirable amount of labor or data duplication, or both, when there is a change to a corporate organizational structure.